package persistencia.carreras.pruebas;

import static org.junit.Assert.*;

import java.io.File;

import modelo.carrera.Conductor;
import modelo.comportamiento.Comportamiento;
import modelo.comportamiento.Conciencia;
import modelo.geometria.Vector;
import modelo.vehiculos.Automovil;
import modelo.vehiculos.SentidoVehiculo;
import modelo.vehiculos.Vehiculo;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import compartido.IEntidad;

import persistencia.carreras.ensambladores.xml.VehiculoXML;
import persistencia.compartido.Repositorio;
import persistencia.compartido.Tipo;
import persistencia.xml.ensambladores.RegistroDeEnsambladoresXML;

public class TestGuardarVehiculos {

	static String directorio = "src/persistencia/pruebas";
	static Tipo<IEntidad> tipoAutomovil = new Tipo<IEntidad>(Automovil.class);
	@Before
	public void setUp() throws Exception {
		File vehiculos = new File(directorio+"/"+tipoAutomovil.getNombre());
		if (vehiculos.exists())
			vehiculos.delete();
	}

	@After
	public void tearDown() throws Exception {
		File vehiculos = new File(directorio+"/"+tipoAutomovil.getNombre());
		if (vehiculos.exists())
			vehiculos.delete();
	}

	@Test
	public void GuardarVehiculo_RecuperarloCorrectamente() {
		Conciencia conciencia = new Conciencia();
		Comportamiento comportamiento = new Comportamiento(conciencia);
		Conductor conductor = new Conductor(comportamiento);

		
		Vector posicionInicial = new Vector(0,0);
		Vector posicionFinal = new Vector(0,20);
		
		SentidoVehiculo sentidoVehiculo = SentidoVehiculo.NORTE;
		double largo = 3;
		double ancho = 2;
		double velocidadActual = 30;
		double velocidadMaxima = 100;
		double aceleracionMaxima = 5;
		double frenadoMaximo = 50;
				
		Vehiculo vehiculo = new Automovil(conductor, posicionInicial, posicionFinal, sentidoVehiculo, largo, ancho, velocidadActual, velocidadMaxima, aceleracionMaxima, frenadoMaximo);
		
		RegistroDeEnsambladoresXML registro = RegistroDeEnsambladoresXML.getInstancia();
		registro.registrar(tipoAutomovil, new VehiculoXML());
		
		
		Repositorio repositorio = new Repositorio("src/persistencia/pruebas");
		
		repositorio.guardarEntidad(vehiculo);
		repositorio.guardar();
		
		Vehiculo copia = (Vehiculo) repositorio.obtenerEntidad(tipoAutomovil, vehiculo.getIdentificador());
		assertNotNull(vehiculo.getIdentificador());
		
	}
}
